package com.briup.cms.utils;


import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.LikeTable;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.query.SQLQuery;

import java.util.Collections;

/**
 * 当第一次构建项目，或新的表添加了，需要执行
 */
public class MybatisPlusGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/cms";
        String username = "root";
        String password = "root";
        FastAutoGenerator.create(url,username,password)
                .globalConfig(builder -> {
                    builder.author("hm") // 设置作者
                            // .enableSwagger() // 开启 swagger 模式   依赖中要添加swagger依赖
                            .fileOverride() // 覆盖已生成文件
                            .disableOpenDir()//禁止打开目录
                            .outputDir("F:\\IDEA\\code\\briup2023\\Project_Self\\cms\\src\\main\\java"); // 指定输出目录
                })
                .dataSourceConfig(builder -> builder.databaseQueryClass(SQLQuery.class).
                        typeConvert(new MySqlTypeConvert()).
                        dbQuery(new MySqlQuery()))
                .packageConfig(builder -> {
                    builder.parent("com.briup.cms") // 设置父包名
                            .entity("bean")
                            .controller("web.controller")
                            // .moduleName("system") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "F:\\IDEA\\code\\briup2023\\Project_Self\\cms\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
                })
                //策略配置
                .strategyConfig(builder -> {
                    //设置entity类信息
                    // builder.entityBuilder().superClass(BaseEntity.class).build();
                    // builder.controllerBuilder().enableFileOverride().build();
                    // builder.serviceBuilder().enableFileOverride().build();
                    builder.mapperBuilder()
                            .enableBaseResultMap()
                            .enableBaseColumnList().build();
                    builder.likeTable(new LikeTable("cms_"))  //模糊匹配
                            // .addInclude("t_student","t_teacher") // 设置需要生成的表名
                            .addTablePrefix("cms_"); // 设置过滤表前缀
                })
                //模板
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
